Example embodiments of the inventive concepts relate to memory controllers, and more particularly, to methods of operating a memory controller for preventing successive wear-leveling operations on one block among a plurality of blocks included in non-volatile memory (e.g., flash memory), data storage devices capable of performing the same, and/or data processing systems capable of performing the same.
Wear-leveling refers to techniques designed to prolong life of a flash memory and/or prevent performance deterioration of the flash memory by configuring blocks in the flash memory to be uniformly used. In conventional wear-leveling techniques, erase counts for respective blocks are compared and data of a block having a high erase count is mapped to a block having a low erase count and data of the block having the low erase count is mapped to the block having the high erase count according to the comparison result. A program/erase operation is frequently performed on a block having the lowest erase count according to the wear-leveling result, and therefore, the erase count of the block increases. As a result, the erase counts, i.e., usage frequencies of the respective blocks can be uniformly maintained.
When wear-leveling is frequently performed in a certain situation, wear-leveling may be undesirably and consecutively or repetitively performed on a block that has just been subjected to the wear-leveling. Despite the fact that an erase count of the block on which wear-leveling has already been performed will increase because a program/erase operation is frequently performed on the block, wear-leveling is consecutively or repetitively performed on the block. According to the consecutive or repetitive wear-leveling, data with respect to which the program/erase operation is frequently performed may be mapped to the block having a high erase count, thereby, increasing a difference in usage frequencies among blocks.
Furthermore, when wear-leveling is concentrated in blocks included in a certain bank among a plurality of banks during wear-leveling, an unbalance of the number of available blocks among the banks may occur. This unbalance leads to the occurrence of garbage collection, which may result in deterioration of performance of a data storage device.